Shell 退出脚本
Shell 中运行的每个命令都使用退出状态码(exit status)告诉 shell 它已经运行完毕。退出状态码是一个 0 ~ 255 的整数值,在命令结束运行时由命令传给 shell。可以捕获这个值并在脚本中使用。
捕获命令返回的状态
Linux 提供了一个专门的变量 $?
来保存上个已执行命令的退出状态码。对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用 $?
变量。它的值会变成由 shell 所执行的最后一条命令的退出状态码。
$ date
Fri 11 Feb 2022 02:27:40 PM CST
$ echo $?
0
$
按照惯例,一个成功结束的命令的退出状态码是 0。如果一个命令结束时有错误,退出状态码就是一个正数值。
$ asdfg
-bash: asdfg: command not found
$ echo $?
127
无效命令会返回一个退出状态码 127。Linux 错误退出状态码没有什么标准可循,但有一些可用的参考。
0 命令成功结束
1 一般性未知错误
2 不适合的 shell 命令
126 命令不可执行
127 没找到命令
128 无效的退出参数
128+x 与 Linux 信号 x 相关的严重错误
130 通过 Ctrl+C 终止的命令
225 正常范围之外的退出状态码
exit 命令
默认情况下,shell 脚本会 以脚本中的最后一个命令的退出状态码退出。可以使用 exit 命令在脚本结束时指定一个退出状态码。
#!/bin/bash
exit 5
$ ./test.sh
$ echo $?
5